/**
 * 开发环境轮播图数据初始化脚本
 * 当 NODE_ENV=development 时，使用硬编码的Banner实体数据初始化
 */

const { Banner } = require('../models');

/**
 * 获取硬编码的轮播图初始化数据
 * @returns {Array} Banner实体数据数组
 */
function getBannerData() {
  return [
    {
      imgUrl: 'https://img0.baidu.com/it/u=1806890510,4029105682&fm=253&fmt=auto&app=138&f=JPEG?w=1000&h=434',
      title: '母亲节鲜花特惠',
      targetUrl: '/pages/activity/mom',
      sortOrder: 20,
      show: true
    },
    {
      imgUrl: 'https://za3.cn/data/upload/shop/textures/06967691638094260.gif',
      title: '520表白节',
      targetUrl: '/pages/activity/520',
      sortOrder: 10,
      show: true
    },
    {
      imgUrl: 'https://photo.16pic.com/00/49/85/16pic_4985375_b.jpg',
      title: '新人专享优惠',
      targetUrl: '/pages/coupon/new',
      sortOrder: 30,
      show: true
    },
    {
      imgUrl: 'https://za3.cn/data/upload/shop/textures/05987912058935210.jpg',
      title: 'Test Banner',
      targetUrl: 'http://example.com/target',
      sortOrder: 10,
      show: true
    }
  ];
}

/**
 * 检查是否需要初始化轮播图数据
 * 基于特定标题来判断数据是否存在
 * @returns {boolean} 是否需要初始化
 */
async function shouldInitializeBanners() {
  try {
    // 检查关键数据是否存在：母亲节鲜花特惠
    const existingBanner = await Banner.findOne({
      where: {
        title: '母亲节鲜花特惠',
        targetUrl: '/pages/activity/mom'
      }
    });
    
    if (existingBanner) {
      console.log('轮播图数据已存在（找到母亲节鲜花特惠），跳过初始化');
      return false;
    }
    
    // 也可以检查数据总量
    const count = await Banner.count();
    if (count >= 4) {
      console.log(`轮播图数据已存在（当前有 ${count} 条数据），跳过初始化`);
      return false;
    }
    
    return true;
  } catch (error) {
    console.error('检查轮播图数据状态时出错:', error);
    return false; // 出错时默认不初始化，避免重复数据
  }
}

/**
 * 初始化轮播图数据
 * 使用硬编码的Banner实体数据并插入数据库
 */
async function initBannersData() {
  try {
    // 检查是否需要初始化
    const shouldInit = await shouldInitializeBanners();
    if (!shouldInit) {
      return;
    }

    console.log('开始初始化轮播图数据...');

    // 获取硬编码的轮播图数据
    const bannerRecords = getBannerData();
    
    if (bannerRecords.length === 0) {
      console.log('未找到轮播图初始化数据');
      return;
    }

    console.log(`准备初始化 ${bannerRecords.length} 条轮播图数据...`);

    // 批量创建Banner记录
    let successCount = 0;
    for (const bannerData of bannerRecords) {
      try {
        // 检查是否已存在相同标题的轮播图
        const existing = await Banner.findOne({
          where: {
            title: bannerData.title,
            targetUrl: bannerData.targetUrl
          }
        });
        
        if (existing) {
          console.log(`轮播图已存在，跳过: ${bannerData.title}`);
          continue;
        }
        
        await Banner.create(bannerData);
        successCount++;
        console.log(`✓ 初始化轮播图: ${bannerData.title}`);
      } catch (err) {
        console.error(`初始化轮播图失败: ${bannerData.title}`, err.message);
      }
    }

    console.log(`成功初始化 ${successCount} 条轮播图数据`);
  } catch (error) {
    console.error('轮播图初始化失败:', error);
    throw error;
  }
}

module.exports = { initBannersData };